@echo off
:: 切换到 UTF-8 编码
chcp 65001 >nul
setlocal enabledelayedexpansion

:: release.bat 1.1.1 发布版本1.1.1 到test分支
:: release.bat 1.1.1 master 发布版本1.1.1 到master分支
:: release.bat 1.1.1 --tag 发布版本1.1.1 到test分支 并为当前版本打上标签
:: release.bat 1.1.1 master --tag 发布版本1.1.1 到master分支 并为当前版本打上标签

:: 设置版本号和分支（默认分支为 test）
set VERSION=%1
set BRANCH=%2
set DO_TAG=false

echo "发布版本 v%VERSION%..."

:: 检查是否有 --tag 参数
if "%BRANCH%"=="--tag" (
    set DO_TAG=true
) else if "%3"=="--tag" (
    set DO_TAG=true
)

:: 如果没有指定分支，默认用 test
if "%BRANCH%"=="" set BRANCH=test

:: 参数验证
if "%VERSION%"=="" (
    echo "&#10060; 错误：未指定版本号！"
    goto :error
)

:: 1. 设置 Maven 版本（不生成备份 POM）
call mvn versions:set -DnewVersion=%VERSION% -DgenerateBackupPoms=false || goto :error

:: 2. 精确添加所有修改的 pom.xml
echo "正在暂存修改的 pom.xml..."
git add pom.xml */pom.xml

:: 3. 显示变更，等待用户确认
echo.
echo "以下文件将被提交："
git diff --cached --name-only || goto :error
echo.
:: echo 按任意键继续提交，或按 Ctrl+C 取消...
pause

:: 4. 提交版本更新
git commit -m "Update version to %VERSION%" || goto :error

:: 5. 仅在 DO_TAG=true 时打标签并推送
if "!DO_TAG!"=="true" (
    echo "正在打标签 v%VERSION%..."
    git tag -a v%VERSION% -m "Release version %VERSION%" || goto :error
    git push origin v%VERSION% || goto :error
) else (
    echo "跳过打标签（未指定 --tag 参数）"
)

:: 6. 推送提交和标签
git push origin %BRANCH% || goto :error

echo.
echo "✅ 版本发布完成：v%VERSION%"
if "!DO_TAG!"=="true" (
    echo "✅ 已打标签：v%VERSION%"
)
endlocal
exit /b 0

:error
echo.
echo "❌ 发布失败！"
endlocal
exit /b 1